/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.Controle;

import br.Modelo.Cliente;
import br.Modelo.Pedido;
import br.Modelo.Produto;
import java.util.ArrayList;
import java.util.Random;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Administrador
 */
public class ControlePedido {
    
    private Pedido objPedido;
    private Cliente objCliente;
    private Produto objProduto;
    
    public ControlePedido(){
        this.objPedido = new Pedido();
        this.objCliente = new Cliente();
        this.objProduto = new Produto();
    }
    
    public int Salvar(ArrayList<String> pLista)
    {
        Random NumeroRandomico = new Random();
        this.objPedido.setNumero_pedido(NumeroRandomico.nextInt(100));
        double CodCliente = Double.parseDouble(pLista.get(2));
        this.objPedido.setCliente_pedido(objCliente.RecuperaObjeto((int)CodCliente));
        this.objPedido.setValor_pedido(Double.parseDouble(pLista.get(3)));
        ArrayList<Produto> Produtos = new ArrayList<Produto>();
        double CodProduto;
        for(int i = 4; i<pLista.size(); i++){
            CodProduto = Double.parseDouble(pLista.get(i));
            Produtos.add(objProduto.RecuperaObjeto((int)CodProduto));
        }
        this.objPedido.setProduto_pedido(Produtos);
        this.objPedido.setProximoCodigoInsercao();
        
        this.objPedido.Salvar();
        return this.objPedido.getCodigo_pedido();
    }
    
    public void Atualizar(ArrayList<String> pLista)
    {
        this.objPedido.setNumero_pedido(Integer.parseInt(pLista.get(1)));
        double CodCliente = Double.parseDouble(pLista.get(2));
        this.objPedido.setCliente_pedido(objCliente.RecuperaObjeto((int)CodCliente));
        this.objPedido.setValor_pedido(Double.parseDouble(pLista.get(3)));
        ArrayList<Produto> Produtos = new ArrayList<Produto>();
        double CodProduto;
        for(int i = 4; i<pLista.size(); i++){
            CodProduto = Double.parseDouble(pLista.get(i));
            Produtos.add(objProduto.RecuperaObjeto((int)CodProduto));
        }
        this.objPedido.setProduto_pedido(Produtos);
        this.objPedido.setProximoCodigoInsercao();
        
        this.objPedido.Atualizar();
    }
    
    public void Excluir(int NumeroPedido){
        this.objPedido.setNumero_pedido(NumeroPedido);
        this.objPedido.Excluir();
    }
    
    public ArrayList<String> ConverterObjetoClienteParaArray(){
        ArrayList<String> vetCampos = new ArrayList<String>();
        vetCampos.add(String.valueOf(this.objCliente.getCodigoCliente()));
        vetCampos.add(this.objCliente.getNome());
        vetCampos.add(this.objCliente.getCidade().getNomeCidade());
        vetCampos.add(this.objCliente.getLogradouro());
        vetCampos.add(String.valueOf(this.objCliente.getNumero()));
        vetCampos.add(this.objCliente.getBairro());
        
        return vetCampos;
    }
    
    public ArrayList<String> RecuperaObjetosCliente(int pCodigo)
    {
        objCliente = objCliente.RecuperaObjeto(pCodigo);
        return ConverterObjetoClienteParaArray();
    }
    
    public ArrayList<String> ConverterObjetoProdutoParaArray(){
        ArrayList<String> vetCampos = new ArrayList<String>();
        vetCampos.add(String.valueOf(this.objProduto.getCodigoProduto()));
        vetCampos.add(this.objProduto.getNomeProduto());
        vetCampos.add(String.valueOf(this.objProduto.getValor()));
        
        return vetCampos;
    }
    
    public ArrayList<String> RecuperaObjetosProduto(int pCodigo){
        objProduto = objProduto.RecuperaObjeto(pCodigo);
        return ConverterObjetoProdutoParaArray();
    }
    
    public ArrayList<String> ConverterObjetoParaArray(){
        ArrayList<String> vetCampos = new ArrayList<String>();
        vetCampos.add(String.valueOf(this.objPedido.getCodigo_pedido()));
        vetCampos.add(String.valueOf(this.objPedido.getNumero_pedido()));
        vetCampos.add(String.valueOf(this.objPedido.getCliente_pedido().getCodigoCliente()));
        for(int i=0; i< this.objPedido.getProduto_pedido().size(); i++){
            vetCampos.add(String.valueOf(this.objPedido.getProduto_pedido().get(i).getCodigoProduto()));
        }
                
        return vetCampos;
    }
    
    public ArrayList<String> RecuperarProdutos(int NumeroPedido){
        ArrayList<String> produtos = new ArrayList<String>();
        this.objPedido.setNumero_pedido(NumeroPedido);
        produtos = this.objPedido.RecuperarProdutos();
        return produtos;
    }
    
    public int RecuperaCodigoCliente(int NumeroPedido){
        this.objPedido.setNumero_pedido(NumeroPedido);
        return this.objPedido.RecuperaCodigoCliente();
    }
    
    public DefaultTableModel PreencherTabelaCliente(DefaultTableModel tabelaModelo){
        ArrayList<Pedido> arrayPedido = new ArrayList<Pedido>();
        arrayPedido = this.objPedido.RecuperaPedidos();
        Vector<String> vetVetor;
        for(int i=0; i<arrayPedido.size(); i++){
            vetVetor = new Vector<String>();
            vetVetor.addElement(String.valueOf(arrayPedido.get(i).getNumero_pedido()));
            vetVetor.addElement(String.valueOf(arrayPedido.get(i).getValor_pedido()));
            tabelaModelo.addRow(vetVetor);
        }
        
        return tabelaModelo;
    }
}
